package com.wjj.system.mapper;

import com.mybatisflex.core.BaseMapper;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
import org.apache.ibatis.annotations.Param;
import com.wjj.common.mybatis.core.page.PageQuery;
import com.wjj.system.domain.SysUser;
import com.wjj.system.domain.bo.SysUserBo;
import com.wjj.system.domain.vo.SysUserExportVo;
import com.wjj.system.domain.vo.SysUserVo;

import java.util.List;

/**
 * 用户表 数据层
 *
 * @author Lion Li
 */
public interface SysUserMapper extends BaseMapper<SysUser> {

    Page<SysUserVo> selectPageUserList(@Param("page") Page<SysUser> page, QueryWrapper wrapper);

    List<SysUserVo> selectUserList(@Param("list") List<Long> userIds);

    /**
     * 根据条件分页查询用户列表
     *
     * @param wrapper 查询条件
     * @return 用户信息集合信息
     */
    List<SysUserExportVo> selectUserExportList(QueryWrapper wrapper);

    /**
     * 根据条件分页查询已配用户角色列表
     * @param user 查询条件
     * @param pageQuery 分页
     * @return 用户信息集合信息
     */
    List<SysUserVo> selectAllocatedList(@Param("param") SysUserBo user, @Param("page") PageQuery pageQuery);

    /**
     * 根据条件分页查询未分配用户角色列表
     *
     * @param user 查询条件
     * @param pageQuery 分页
     * @return 用户信息集合信息
     */
    List<SysUserVo> selectUnallocatedList(@Param("param") SysUserBo user, @Param("page") PageQuery pageQuery);

    long countUserById(Long userId);

    Long selectAllocatedCount(@Param("param") SysUserBo user);
    Long selectUnallocatedCount(@Param("param") SysUserBo user);
}
